package com.ruoyi.test.service.impl;

import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.system.service.IFileService;
import com.ruoyi.test.domain.FileRecord;
import com.ruoyi.test.mapper.FileRecordMapper;
import com.ruoyi.test.service.IFileRecordService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 文件记录Service业务层处理
 *
 * @author KevenPotter
 * @date 2024-06-12 13:53:16
 */
@Service
@AllArgsConstructor
public class FileRecordServiceImpl implements IFileRecordService {

    private final FileRecordMapper fileRecordMapper;
    private final IFileService fileService;

    /**
     * 查询文件记录
     *
     * @param id 文件记录主键
     * @return 文件记录
     */
    @Override
    public FileRecord getById(Long id) {
        return fileRecordMapper.getById(id);
    }

    /**
     * 查询文件记录列表
     *
     * @param fileRecord 文件记录
     * @return 文件记录
     */
    @Override
    public List<FileRecord> selectFileRecordList(FileRecord fileRecord) {
        return fileRecordMapper.selectFileRecordList(fileRecord);
    }

    /**
     * 新增文件记录
     *
     * @param fileRecord 文件记录
     * @return 结果
     */
    @Override
    public int insertFileRecord(FileRecord fileRecord) {
        fileRecord.setCreateTime(DateUtils.getNowDate());
        return fileRecordMapper.insertFileRecord(fileRecord);
    }

    /**
     * 修改文件记录
     *
     * @param fileRecord 文件记录
     * @return 结果
     */
    @Override
    public int updateFileRecord(FileRecord fileRecord) {
        fileRecord.setUpdateTime(DateUtils.getNowDate());
        return fileRecordMapper.updateFileRecord(fileRecord);
    }

    /**
     * 批量删除文件记录
     *
     * @param ids 需要删除的文件记录主键
     * @return 结果
     */
    @Override
    public int deleteFileRecordByIds(Long[] ids) {
        return fileRecordMapper.deleteFileRecordByIds(ids);
    }

    /**
     * 删除文件记录信息
     *
     * @param id 文件记录主键
     * @return 结果
     */
    @Override
    public int deleteFileRecordById(Long id) {
        return fileRecordMapper.deleteFileRecordById(id);
    }

    /**
     * 过滤出埠参数参数
     *
     * @param fileRecord 文件记录对象
     * @param loginUser  当前登录对象
     * @return 返回过滤后的[文件记录对象]
     * @author KevenPotter
     * @date 2024-06-12 16:21:14
     */
    @Override
    public FileRecord filterInbound(FileRecord fileRecord, LoginUser loginUser) {
        if (StringUtils.isNotEmpty(fileRecord.getSourceFileUrl())) fileRecord.setSourceFileUrl(FileUtils.buildFileUrl(fileRecord.getSourceFileUrl()));
        if (StringUtils.isNotEmpty(fileRecord.getConvertFile1())) fileRecord.setConvertFile1(FileUtils.buildFileUrl(fileRecord.getConvertFile1()));
        if (StringUtils.isNotEmpty(fileRecord.getConvertFile2())) fileRecord.setConvertFile2(FileUtils.buildFileUrl(fileRecord.getConvertFile2()));
        return fileRecord;
    }

    /**
     * 过滤出埠参数参数
     *
     * @param fileRecord 文件记录对象
     * @param loginUser  当前登录对象
     * @return 返回过滤后的[文件记录对象]
     * @author KevenPotter
     * @date 2024-06-12 16:21:29
     */
    @Override
    public FileRecord filterOutbound(FileRecord fileRecord, LoginUser loginUser) {
        if (StringUtils.isNotEmpty(fileRecord.getSourceFileUrl())) fileRecord.setSourceFileUrl(fileService.buildSingleFileUrlFullPath(fileRecord.getSourceFileUrl()));
        if (StringUtils.isNotEmpty(fileRecord.getConvertFile1())) fileRecord.setConvertFile1(fileService.buildSingleFileUrlFullPath(fileRecord.getConvertFile1()));
        if (StringUtils.isNotEmpty(fileRecord.getConvertFile2())) fileRecord.setConvertFile2(fileService.buildSingleFileUrlFullPath(fileRecord.getConvertFile2()));
        return fileRecord;
    }
}
